package com.zhxy.gps.tm;

import com.zhxy.gps.terminal.message.AbstractMessage;
import com.zhxy.gps.terminal.message.ReplyMessage;
import com.zhxy.util.async.ResultHandler;

/**
 * 终端管理器
 * 1.和多个终端网关对接，以标准终端协议交换信息
 * 2.管理终端及其相关状态(例如通过哪个网关接入系统,接入系统的时间等等)
 * 3.允许对终端的状态进行查询
 * 4.终端的鉴权
 * 
 * @author 刘勉
 *
 */
public interface TerminalManager {
	
	public static final String STATUS_ONLINE = "online";
	
	void addTerminalManagerListener(TerminalManagerListener listener);
	
	void removeTerminalManagerListener(TerminalManagerListener listener);
	
	/**
	 * 向指定终端发送消息
	 * @param deviceSerial 终端序列号
	 * @param message 发送的消息
	 * @param handler 终端响应处理器，可以为null
	 */
	void send(String deviceSerial, AbstractMessage message, ResultHandler<ReplyMessage> handler);
	
	/**
	 * 查询指定终端的状态
	 * @param deviceSerial 终端序列号
	 * @param name 查询的状态名称
	 * @return
	 */
	Object status(String deviceSerial, String name);
}
